<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>key 的原理</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <button @click="add">添加人员</button>

        <h2>使用 index 作为 key</h2>
        <ul>
            <!-- 模板中的 key 是 Vue 生成虚拟 DOM 使用的，生成真实 DOM 渲染到页面后，Vue 会把 key 移除 -->
            <li v-for="(value, index) in persons" :key="index">
                {{ value.name }} - {{ value.age }}
                <input type="text" />
            </li>
        </ul>

        <h2>使用 id 作为 key</h2>
        <ul>
            <li v-for="(value, index) in persons" :key="value.id">
                {{ value.name }} - {{ value.age }}
                <input type="text" />
            </li>
        </ul>
    </div>

    <script>
        new Vue({
            el: '#app',
            data: {
                persons: [
                    { id: '001', name: '张三', age: 18 },
                    { id: '002', name: '李四', age: 19 },
                    { id: '003', name: '王五', age: 20 }
                ]
            },
            methods: {
                add() {
                    const person = { id: '004', name: '老刘', age: 21 }
                    this.persons.unshift(person)
                }
            }
        })
    </script>
</body>
</html>